Skip to content

Conversation

@Ciheim
Copy link
Collaborator

@Ciheim Ciheim commented Jan 6, 2026

Describe your changes

Issue ticket number and link (if applicable)

Checklist before requesting a review

  • I ran my code
  • I tried to make my code readable
  • I tried to comment my code
  • I wrote a new test, if applicable
  • I wrote new instructions/documentation, if applicable
  • I ran pytest and inspected it's output
  • I ran pylint and attempted to implement some of it's feedback
  • No print statements; all user-facing info uses logging module

Copy link
Collaborator

@ceblanton ceblanton left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me. 2025.01.01 is the latest catalogbuilder version on our channel (https://anaconda.org/channels/NOAA-GFDL/packages/catalogbuilder/files)

@ceblanton
Copy link
Collaborator

It's not passing the tests but the failures don't clearly look catalogbuilder related

@singhd789
Copy link
Collaborator

It's not passing the tests but the failures don't clearly look catalogbuilder related

I don't think it's catalog builder related either - I saw the same failure in my #679 PR but haven't taken a closer look yet

Copy link
Member

@ilaflott ilaflott left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we need green checks!

this doesn't look associated with catalogbuilder directly, the error message is associated with a lack of the IPython, which is required by the intake_esm package, which catalogbuilder seems to require a specific version of that's not working here.

it's not impossible something about intake_esm changed from underneath catalogbuilder.

pay close attention to the trace in the logs!

https://github.com/NOAA-GFDL/fre-cli/actions/runs/20758852348/job/59608111480#step:8:169

@ilaflott
Copy link
Member

actually, i'm realizing this is something to do with analysis-scripts / fre.analysis / #542 , and catalogbuilder changes just revealed the issue. consider the following:

the error/stack trace from pytest starts here. I clipped the output to the important bits, see link for all gory details:

fre/analysis/tests/test_subtools.py:52: AssertionError
----------------------------- Captured stdout call -----------------------------
Traceback (most recent call last):
  File "/tmp/tmpwu2tkcqs/python_script", line 3, in <module>
    paths = run_plugin('freanalysis_clouds', '/tmp/tmpvcmwustk/fake-catalog', '.', config=config)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tmp/tmpvcmwustk/env/lib/python3.11/site-packages/analysis_scripts/plugins.py", line 140, in run_plugin
    return _plugin_object(name).run_analysis(catalog, png_dir, config, reference_catalog)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tmp/tmpvcmwustk/env/lib/python3.11/site-packages/freanalysis_clouds/__init__.py", line 97, in run_analysis
    catalog = intake.open_esm_datastore(catalog)
              ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tmp/tmpvcmwustk/env/lib/python3.11/site-packages/intake/__init__.py", line 82, in __getattr__
    driver = registry[attr[5:]]  # "open_..."
             ~~~~~~~~^^^^^^^^^^
  File "/tmp/tmpvcmwustk/env/lib/python3.11/site-packages/intake/source/__init__.py", line 30, in __getitem__
    return it.load()
           ^^^^^^^^^
...
...
...

  File "/tmp/tmpvcmwustk/env/lib/python3.11/site-packages/intake_esm/__init__.py", line 10, in <module>
    from intake_esm.core import esm_datastore
  File "/tmp/tmpvcmwustk/env/lib/python3.11/site-packages/intake_esm/core.py", line 24, in <module>
    from fastprogress.fastprogress import progress_bar

...
...
...

ModuleNotFoundError: No module named 'IPython'

So, IPython is required by intake_esm, but isn't there. intake_esm is required by intake which is required by freanalysis_clouds... and this is where it gets odd! freanalysis_clouds should be getting pip install'd into it's own venv, and NOT the same environment as fre-cli / analysis-scripts.

NOAA-GFDL/analysis-scripts/user_scripts/freanalysis_clouds does require intake_esm, but again, it should be trying to use an intake_esm pip installed into a separate venv with which it is compatible

@ceblanton
Copy link
Collaborator

actually, i'm realizing this is something to do with analysis-scripts / fre.analysis / #542 , and catalogbuilder changes just revealed the issue. consider the following:

the error/stack trace from pytest starts here. I clipped the output to the important bits, see link for all gory details:

fre/analysis/tests/test_subtools.py:52: AssertionError
----------------------------- Captured stdout call -----------------------------
Traceback (most recent call last):
  File "/tmp/tmpwu2tkcqs/python_script", line 3, in <module>
    paths = run_plugin('freanalysis_clouds', '/tmp/tmpvcmwustk/fake-catalog', '.', config=config)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tmp/tmpvcmwustk/env/lib/python3.11/site-packages/analysis_scripts/plugins.py", line 140, in run_plugin
    return _plugin_object(name).run_analysis(catalog, png_dir, config, reference_catalog)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tmp/tmpvcmwustk/env/lib/python3.11/site-packages/freanalysis_clouds/__init__.py", line 97, in run_analysis
    catalog = intake.open_esm_datastore(catalog)
              ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tmp/tmpvcmwustk/env/lib/python3.11/site-packages/intake/__init__.py", line 82, in __getattr__
    driver = registry[attr[5:]]  # "open_..."
             ~~~~~~~~^^^^^^^^^^
  File "/tmp/tmpvcmwustk/env/lib/python3.11/site-packages/intake/source/__init__.py", line 30, in __getitem__
    return it.load()
           ^^^^^^^^^
...
...
...

  File "/tmp/tmpvcmwustk/env/lib/python3.11/site-packages/intake_esm/__init__.py", line 10, in <module>
    from intake_esm.core import esm_datastore
  File "/tmp/tmpvcmwustk/env/lib/python3.11/site-packages/intake_esm/core.py", line 24, in <module>
    from fastprogress.fastprogress import progress_bar

...
...
...

ModuleNotFoundError: No module named 'IPython'

So, IPython is required by intake_esm, but isn't there. intake_esm is required by intake which is required by freanalysis_clouds... and this is where it gets odd! freanalysis_clouds should be getting pip install'd into it's own venv, and NOT the same environment as fre-cli / analysis-scripts.

NOAA-GFDL/analysis-scripts/user_scripts/freanalysis_clouds does require intake_esm, but again, it should be trying to use an intake_esm pip installed into a separate venv with which it is compatible

@ilaflott thank you for getting to the bottom of this, and I'm sorry the trail leads to fre-analysis.

The existing fre-analysis stuff is being refactored, and I strongly suggest we turn off the fre-analysis tests for now.

@ilaflott
Copy link
Member

I agree- @skip the fre.analysis tests... A bit sad, though

@ilaflott
Copy link
Member

@Ciheim @ceblanton @singhd789

bizarre- this might actually be an intake-esm bug, catalogbuilder is having the same problem in it's pipelines that it ran successfully for recent updates. perplexing.

see https://github.com/NOAA-GFDL/CatalogBuilder/actions/runs/20970566497/job/60272504792

@singhd789
Copy link
Collaborator

@Ciheim @ceblanton @singhd789

bizarre- this might actually be an intake-esm bug, catalogbuilder is having the same problem in it's pipelines that it ran successfully for recent updates. perplexing.

see https://github.com/NOAA-GFDL/CatalogBuilder/actions/runs/20970566497/job/60272504792

Also happened in my fre make PR: #679

@Ciheim
Copy link
Collaborator Author

Ciheim commented Jan 13, 2026

@ilaflott Good catch. This is why we test!

@ilaflott
Copy link
Member

the mystery thickens...

AnswerDotAI/fastprogress#117

@ilaflott
Copy link
Member

actually, i think intake_esm's fix for this isn't up to snuff: intake/intake-esm#770

i think i officially blame intake_esm, BUT, analysis-script's failure to use an isolated environment is troubling, independently.

@ilaflott
Copy link
Member

In light of exploring this, I've opened intake/intake-esm#773

@ceblanton @Ciheim @singhd789 @aradhakrishnanGFDL

@codecov
Copy link

codecov bot commented Jan 16, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 85.30%. Comparing base (982868f) to head (21d4523).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #693   +/-   ##
=======================================
  Coverage   85.30%   85.30%           
=======================================
  Files          68       68           
  Lines        4498     4498           
=======================================
  Hits         3837     3837           
  Misses        661      661           
Flag Coverage Δ
unittests 85.30% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@ilaflott ilaflott merged commit 07fcb72 into main Jan 16, 2026
6 checks passed
@ilaflott ilaflott deleted the testing_catalog branch January 16, 2026 14:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants